/*  Copyright (s) 2019 深圳百问网科技有限公司
 *  All rights reserved
 * 
 * 文件名称：main.c
 * 摘要：
 *  
 * 修改历史     版本号       Author       修改内容
 *--------------------------------------------------
 * 2022.1.4      v01        百问科技      创建文件
 *--------------------------------------------------
*/
#include <stdio.h>
#include <string.h>
#include "main.h"
#include "driver_led.h"
#include "driver_systick.h"
#include "driver_key.h"
#include "driver_usart.h"

uint32_t sys_clk = 0;
int main(void)
{   
	uint8_t cmd = 0;
    // 初始化HAL库函数必须要调用此函数
    HAL_Init();

	/*
	* 系统时钟即 AHB/APB 时钟配置
	* 当使用外部高速时钟 HSE（8MHz）配置系统时钟时，使用 PLL 前可以选择不分频或者二分频，我们要配置到最大72MHz的系统频率，此处当然不分频
	* 然后经过锁相环放大，放大倍数为 9，即 8*9=72MHz 是能配置的最大系统频率，F103 的最大系统频率为 72MHz，64MHz 显然是合法
	  的系统频率
	*/
    SystemClock_Config();
	
	// 调用库函数来检验自己的配置是否成功配置为系统频率 72MHz
	sys_clk = HAL_RCC_GetSysClockFreq();

	LedGpioInit();

	// 初始化USART2，设置波特率为115200 bps
	UsartInit(115200);
	
	// 在windows下字符串\n\r表示回车
    // 如果工程在编译下面这句中文的时候报错，请在魔术棒“Option for target”->"C/C++"->"Misc Controls"添加“--locale=english”
	printf("百问科技www.100ask.net\n\r");
    printf("UART实验\n\r");
    printf("test char            = %c,%c\n\r", 'H', 'c');
    printf("test string1         = %s\n\r", "www.100ask.net");
	printf("test string2         = %s\n\r", "深圳百问网科技有限公司");
	printf("test decimal1 number = %d\n\r", 123456);
	printf("test decimal2 number = %d\n\r", -123456);
	printf("test hex1     number = 0x%x\n\r", 0x123456);
	printf("test hex2     number = 0x%08x\n\r", 0x123456);
	printf("test float           = %.5f\n\r", 3.1415);
	printf("test double          = %.10lf\n\r", 3.141592653);
	
	HAL_GPIO_WritePin(GPIOA, GPIO_PIN_1, ON);
	
	printf("\r\n键盘输入按Enter后回显\r\n");
    while(1)
    {
		scanf("%c", &cmd);
		if(cmd == 'c' || cmd == 'C')
		{
			cmd = 0;
			printf("get word: %c\r\n", cmd);
		}
		HAL_Delay(100);
    }
}
